home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / DOC / LIESMICH.TXT < prev    next >
Encoding:
Text File  |  1994-06-08  |  38.6 KB  |  869 lines

  1. -------------------------------------------------------------------------------
  2.                Aktuelle Informationen zum vorliegenden System
  3. -------------------------------------------------------------------------------
  4.  
  5.                                                                  Stand: 8.6.94
  6.                                                     (Shell 2.3g, Compiler 4.3d)
  7.  
  8. Inhaltsübersicht
  9. ----------------
  10.  1. Installation des Systems
  11.      a) Installation eines Updates
  12.      b) Installation auf Harddisk
  13.      c) Installation ohne Harddisk
  14.      d) Installation bei wenig Speicher (Tiny-Shell)
  15.      e) Komprimierte Dateien
  16.      f) Zusammenarbeit mit NEODESK
  17.      g) Das Megamax-Icon
  18.      h) Sonstige Tips
  19.  2. Änderungen in der Bibliothek - Portierung der alten Programme
  20.  3. Besonderheiten und Fehler in Bibliothek & Shell
  21.  4. Fehler bei Benutzung der FPU (Mathe-Coprozessor)
  22.  7. Änderungen am GME (Editor)
  23.  8. Hinweise zum Compiler
  24.  9. Hinweise zum Linker
  25. 10. Hinweise zum Make
  26. 11. Erweiterungen in der Shell
  27. 12. MM2CLink - Der Linker für Turbo-C & Pure-C
  28. 13. Die aktuellen Nummern der MAUS-Mailboxen
  29. 14. Korrekturen zum Handbuch
  30. 15. Weiterer Support & Vertrieb
  31.  
  32.  
  33. 1. Installation des Systems
  34. ---------------------------
  35.  
  36.   a) Installation eines Updates
  37.  
  38. Wann immer sie ein neues System - in der Regel auf vier Disketten - bekommen,
  39. sollten Sie ALLE Dateien ersetzen. Gehen Sie also wie bei einer Neuinstallation
  40. vor und retten Sie vorher Ihre veränderten Dateien, wie "MM2SHELL.M2B" und
  41. "MM2SHELL.M2P". Die anderen Dateien des MM2-Systems müssen Sie vor einer
  42. Neuinstallation mit HD_INST löschen, da das Programm sonst bei den erneuerten
  43. Dateien Fehler meldet.
  44.  
  45. Wenn Sie auf Version 2.3 updaten, können Sie Ihre alten "M2P"-Dateien nicht
  46. ohne weiteres übernehmen, da sich deren Format geändert hat. Installieren
  47. Sie erstmal dieses System und übersetzen Sie dann das Modul "Conv_M2P" aus
  48. dem UTILITY-Ordner. Folgen Sie den Anweisungen im Quelltext, um damit Ihre
  49. alten M2P-Dateien automatisch auf das neue System anpassen zu lassen.
  50.  
  51. In der beiliegenden Datei REPORT.TXT finden Sie übrigens Informationen
  52. über die bisherigen Korrekturen am System.
  53.  
  54.   b) Installation auf Harddisk
  55.  
  56. Wie im Handbuch beschrieben, installieren Sie das System bequem mit
  57. dem Programm "HD_INST.PRG". Wollen Sie das System aber nur mal schnell
  58. ausprobieren, können Sie auch eine der Shells (MM2SHELL.PRG und
  59. MM2TINYS.PRG) direkt von der Diskette starten. Wenn die Editor (GME)
  60. und Compiler (MM2COMP) geladen sind, können Sie die Diskette mit dem
  61. USER-Ordner einlegen und dann beispielsweise die Beispielprogramme
  62. aus dem DEMO-Ordner übersetzen und starten.
  63.  
  64.   c) Installation ohne Harddisk
  65.  
  66. Sie können mit dem Modula-System arbeiten, ohne weitere Installationen
  67. vorzunehmen: Starten Sie die Shell von der Startdiskette und legen
  68. Sie danach die Arbeitsdisk (die mit dem USER-Ordner) ein. Darauf sind
  69. alle Dateien enthalten, um Module übersetzen und starten zu können. Um
  70. mehr Platz zu erhalten, können Sie auch einiges von der Arbeitsdisk
  71. löschen, beispielsweise MM2CL1.TOS und den SRC-Ordner. Wenn Sie über
  72. mehr als ein Megabyte Speicher verfügen, richten Sie sich mit Hilfe der
  73. "MAXIDISK" (s. entspr. Ordner) eine RAM-Disk ein und lassen sich die
  74. Dateien im SYS-Ordner der Arbeitsdisk auf die RAM-Disk kopieren. Erweitern
  75. Sie dann die Pfadlisten im Shell-Batch (MM2SHELL.M2B bzw. MM2TINYS.M2B) um
  76. diese Verzeichnisse in der RAM-Disk.
  77.  
  78.   d) Installation bei wenig Speicher (Tiny-Shell)
  79.  
  80. Das Programm "MM2TINYS.PRG" ist eine vereinfachte Version der "normalen"
  81. "MM2Shell". Sie verzichtet auf alle Desktop-Symbol und -Fenster und
  82. spart dadurch ca. 100 KB Speicher ein. Wenn Sie nur 1 MB Speicher im
  83. Rechner haben, sollten Sie in der Regel auf diese Shell zurückgreifen.
  84. Die weiteren Dateien, die mit "MM2TINYS" beginnen, gehören alle zu
  85. dieser Shell - die mit "MM2SHELL" beginnenden Dateien gehören entsprechend
  86. zur großen Shell.
  87.  
  88. Verwenden Sie als Editor möglichst den GEP_ED statt des GME (einzustellen
  89. in den Editor-Parametern; entfernen Sie zudem die entspr. Load-Anweisung
  90. im Shell-Batch!).
  91.  
  92. Laden Sie Compiler und Editor nicht resident sondern lassen Sie sie
  93. jedesmal von Disk laden, indem Sie die Load-Anweisungen aus dem Shell-
  94. Batch entfernen (wenn Sie keine Harddisk haben, müssen Sie die Module
  95. in den SYS-Ordner der Arbeitsdisk kopieren).
  96.  
  97. Wenn Sie nur kurzzeitig viel Speicher brauchen, beispielsweise, um die
  98. Shell neu zu linken, können Sie durch Drücken der "Esc"-Taste während
  99. des Starts der Shell das Ausführen der "Load"-Anweisungen der Shell-
  100. Batch-Datei verhindern. Oder starten Sie den Batch "UNLOAD.M2B" - er
  101. gibt die evtl. geladenen Module "MM2Comp", "GME" und "GEP_ED" frei.
  102.  
  103. Beachten Sie außerdem die Hinweise im Handbuch im Abschnitt
  104. "Speicherplatzmangel?" unter Kapitel 2.
  105.  
  106.   e) Komprimierte Dateien
  107.  
  108. Trotz vier doppelseitig bespielter Disketten mußten viele Dateien
  109. komprimiert werden, um sie alle darauf unterbringen zu können.
  110. Wir haben aber darauf geachtet, daß Sie den Großteil des Systems
  111. trotzdem erstmal ohne weitere Arbeiten benutzen können.
  112.  
  113. Die beiden Shell-Programme und das RCP (NRSC_ASH.PRG) sind komprimiert,
  114. entpacken sich aber bei jedem Start selbständig im Speicher. Das dauert
  115. allerdings eine kurze Zeit. Während das beim RCP nicht stören sollte,
  116. können Sie bei Bedarf unkomprimierte Versionen der Shells erzeugen,
  117. indem Sie sie einfach neu linken, z.B. durch Verwendung der Batch-
  118. Dateien "LINKSHEL.M2B" bzw. "LINKTINY.M2B". Allerdings müssen Sie zuerst
  119. die Shell übersetzen. Sie finden die Quelltexte beider Shells in gepackter
  120. Form in SRC\UTILITY (s. nächsten Absatz).
  121.  
  122. Weiterhin sind die Quelltexte der Definitionen, der MOS-Implementationen,
  123. der Shells und der UTILITY-Programme gepackt. Die komprimierten Dateien
  124. befinden sich in den Ordnern "SRC\D", "SRC\MOS" und "SRC\UTILITY". Sie
  125. finden sich dort als ausführbare Programme - wenn Sie sie starten, beginnen
  126. sie automatisch, sich zu entpacken. Allerdings muß ausreichend Platz
  127. auf der Disk vorhanden sein (ca. die doppelte Größe der komprimierten
  128. Datei). Deshalb müssen Sie u.U. die Dateien erst jeweils auf eine
  129. leere, doppelseitig formatierte Disk kopieren. Sie können die TOS-Dateien
  130. auch mit der Endung LZH versehen und dann mit dem beigelegten Programm
  131. LHARC.TTP die enthaltenen Quelltextdateien einzeln entpacken (starten
  132. Sie ggf. dazu LHARC.TTP, um eine Kurzanleitung zu erhalten).
  133.  
  134. Die Dateien in MAXIDISK.4MB und TEMPLMON.V20 sind auf dieselbe Weise
  135. gepackt. Einfach dort das jeweilige Programm START_ME.TOS starten.
  136.  
  137. Die Dateien wurden übrigens mit den Programmen "PFXPAK.PRG" sowie
  138. "MAKESFX.PRG" von Thomas Quester und Markus Fritze komprimiert.
  139. Vielen Dank dafür!
  140.  
  141.   f) Zusammenarbeit mit NEODESK
  142.  
  143. Wenn Sie NEODESK benutzen, müssen Sie die Modula-Shell dahingehend anpassen,
  144. um einen Fehler in NEODESK zu umgehen. Laden Sie dazu den Quelltext der
  145. von Ihnen verwendeten Shell (MM2SHELL.M oder MM2TINYS.M) und setzen Sie
  146. die darin befindliche Konstante 'DoShellWrite' auf FALSE. Übersetzen und
  147. Linken Sie dann die Shell (zum Linken können Sie einfach "LINKSHEL.M2B"
  148. bzw. "LINKTINY.M2B" starten).
  149.  
  150.   g) Das Megamax-Icon
  151.  
  152. Die Datei MM2ICON.RSC ist eine GEM-Resource-Datei, die Icons mit dem Megamax-
  153. Symbol enthält. Sie können es bei Programmen verwenden, bei denen Sie den
  154. Dateien individuelle Icons zuordnen können, z.B. Gemini, Neodesk, Opaque
  155. oder dem Desktop des Atari TT.
  156.  
  157.   h) Sonstige Tips
  158.  
  159. Damit Sie das Make nutzen können, sollten Sie nicht vergessen, das Programm
  160. "SetTime" aus dem UTILITY-Ordner zu übersetzen, zu linken (s. Quelltext)
  161. und in Ihren AUTO-Ordner zu kopieren, wenn Sie keine Echtzeituhr im
  162. Rechner haben.
  163.  
  164.  
  165. 2. Änderungen in der Bibliothek - Portierung der alten Programme
  166. ----------------------------------------------------------------
  167.  
  168. Neben den im Anhang 11 des Handbuchs beschriebenen Änderungen der
  169. Bibliothek gegenüber dem alten System 1.0 und 1.1 sind noch zwei
  170. weitere Punkte zu beachten:
  171.  
  172. * Wenn Sie in Ihren Programmen andere Module mit "Loader.CallModule"
  173.   nachstarten können, sollten Sie alle Ihre eingebundenen Module
  174.   mit der Direktive "$Y+" versehen, da dies beim alten System praktisch
  175.   die Standard-Einstellung war.
  176.  
  177. * Modul Excepts: 'InstallExc' und 'InstallSupvExc' wurden zu
  178.   'InstallPreExc' zusammengefaßt - die Unterscheidung trifft nun
  179.   ein zusätzlicher BOOLEAN-Parameter. Wenn Sie 'InstallExc'
  180.   verwendet haben, passen Sie den Namen an und fügen als neues
  181.   drittes Argument "TRUE" ein.
  182.  
  183. * Das Feld 'year' im Record 'Date' (nun im Modul 'MOSGlobals') hat
  184.   nun den Typ INTEGER, vormals CARDINAL.
  185.  
  186.  
  187. 3. Besonderheiten und Fehler in Bibliothek und Shell
  188. ----------------------------------------------------
  189.  
  190. Wichtige neue Regel:
  191.  
  192. Wollen Sie das Modula-Programm vorzeitig beenden (z.B. aufgrund eines
  193. Fehlers, der ein weiterlaufen des Programms unmöglich macht), sollten
  194. Sie nicht die GEMDOS-Funktion Pterm() dazu aufrufen sondern stattdessen
  195. immer die Funktion PrgCtrl.TermProcess benutzen. Wenn Sie Pterm direkt
  196. aufrufen, passiert zwar nichts Schlimmes, aber es kann unter bestimmten
  197. Umständenden passieren, daß dann ein falscher Exit-Code anstatt des bei
  198. Pterm angegebenen Wertes an das aufrufende Programm zurückgegeben wird.
  199.  
  200.  
  201. Folg. Funktionen sind noch nicht implementiert:
  202.  
  203. Modul Excepts:     InstallPostExc.
  204. Modul Files:       Abort.
  205. Modul InOut:       ReadToken, ReadFromLine, ReadLn und EndOfLine.
  206. Modul LibFiles:    CopyLib.
  207. Modul Textwindows: Abortread.
  208.  
  209.  
  210. Folgende Macken/Fehler sind zur Zeit bekannt:
  211.  
  212. * Für unsere Schwizer User: Die Tastenbelegung in der Shell ist teilweise
  213.   verwirrend: So werden die Tasten über ihren Scan-Code (und nicht etwa,
  214.   wie es dann sein sollte, über die Funktionen des Keyboard-Moduls - grrr)
  215.   direkt abgefragt, was dazu führt, daß Sie zum Übersetzen&Starten nicht
  216.   die Plus- sondern die Taste drücken müssen, die rechts und unterhalb
  217.   von der Return-Taste umrungen ist.
  218.  
  219. * Werden Dateien geladen, die keine vom neuen Compiler erzeugten Module und
  220.   auch keine normalen Programmdateien sind, kommt die Fehlermeldung
  221.   "Unerlaubtes Layout von ..." und danach ist fast aller Speicher belegt.
  222.   Dies liegt an einem Fehler im TOS. Sie müssen daraufhin die Shell bzw.
  223.   das Programm, von dem Sie aus geladen haben, verlassen und neu starten,
  224.   um den Speicher wieder frei zu bekommen.
  225.  
  226. * Beide Shells laufen unter MultiGEM. Ist allerdings das GDOS "AMCLIGHT"
  227.   installiert, darf die Shell dann nicht mehr verlassen werden, weil sonst
  228.   das System abstürzt! Der Fehler ist bekannt aber kann leider nicht so
  229.   einfach behoben werden.
  230.  
  231. * Die große Shell MM2SHELL hat Probleme unter MultiTOS. So kommt es oft
  232.   vor, daß beim Verlassen der Shell oder beim Ende des Linker-Aufrufs
  233.   das ganze System stehenbleibt. Wenn Sie wissen sollten, woran das liegt,
  234.   oder nach den Fehlern suchen wollen, melden Sie sich doch bitte bei
  235.   Thomas Tempelmann. Ggf. können Sie auch die notwendigen Quelltexte zum
  236.   Testen/Korrigieren erhalten.
  237.   Programme, die mit dem Modula-System erzeugt wurden, laufen jedoch
  238.   in der Regel unter MultiTOS. Wahrscheinlich ist nur die Shell selbst
  239.   die Ursache für die bekannten Probleme.
  240.   Mit Mag!X gibt es seit der Shell V2.3e übrigens keine bekannten Probleme
  241.   mehr.
  242.  
  243.  
  244. 4. Fehler bei Benutzung der FPU (Mathe-Coprozessor)
  245. ---------------------------------------------------
  246.  
  247. Im Handbuch ist beschrieben, daß Sie sich eine neue Shell linken
  248. müssen, wenn Sie die FPU benutzen wollen. Wenn Sie ein Programm
  249. erzeugen, das die FPU benutzt (auch die Shell) und Sie dies Programm
  250. auf einem Rechner ohne die benötigte FPU starten, liefert es einen
  251. Exitcode, der den Desktop veranlaßt, "TOS-Fehler #46" anzuzeigen.
  252.  
  253. Wenn Sie eine Beschleunigerkarte zusammen mit der ST-FPU (SFP004 von
  254. Atari oder kompatible) einsetzen, kann es sein, daß die Fehlermeldung
  255. "Protokollverletzung" auftritt oder der Rechner in Endlosschleifen
  256. verweilt. So beispielsweise bei der 68030er-Karte "hyperCACHE 030"
  257. von proVME.
  258. Schalten Sie dann vorher den/die Daten-Cache(s) ab. Der Fehler sollte
  259. dann nicht mehr auftreten.
  260.  
  261. Siehe auch Hinweis zu den Konstanten pi und e im Kap. 8.
  262.  
  263.  
  264. 5. (nicht mehr vorhanden)
  265.  
  266. 6. (hat sich erledigt)
  267.  
  268.  
  269. 7. Änderungen am GME (Editor)
  270. -----------------------------
  271.  
  272. Es ergaben sich noch einige Umbelegungen der Tastenbefehle.
  273. Sie können nun je nach Belieben nach Word-Star- oder McIntosh-Art
  274. Blöcke kopieren und verschieben:
  275.  
  276. Wenn Sie einen Block mit der Maus (rechte und linke Maustasten für
  277. Blockanfang und -ende) oder durch ^KB und ^KK markiert haben,
  278. können Sie ihn entweder mit ^KC sofort kopieren bzw. mit ^KV
  279. verschieben oder Sie können ihn mit ^C ins "Klemmbrett" kopieren
  280. bzw. mit ^X ausschneiden und dann mit ^V an anderer Stelle wieder
  281. einfügen.
  282.  
  283. Wenn Sie "Einfügen" (^V) im Block-Menü benutzen und Sie unmittelbar
  284. zuvor einen Block markiert haben, wird der markierte Bereich durch
  285. den Einzufügenden ersetzt.
  286.  
  287. ACHTUNG: Wenn Sie das Blockende setzen, beachten Sie, daß der Block
  288. nur bis zu dem Zeichen VOR dem Cursor markiert wird!
  289.  
  290. Leider kommt der GME noch nicht korrekt mit Accssories klar. Wenn Sie
  291. beispielsweise das Kontrollfeld im GME aufrufen, wird sein Fenster
  292. bei der ersten Editor-Operation überschrieben und kann nicht mehr
  293. angesprochen werden. Achten Sie also darauf, daß Sie Accessory-Fenster
  294. nach der Benutzung sofort wieder schließen.
  295.  
  296.  
  297. 8. Hinweise zum Compiler
  298. ------------------------
  299.  
  300. ISO-Erweiterung:
  301.   Prozeduren können unter anderem Namen redefiniert werden über die
  302.   CONST-Anweisung. So kann z.B. mittels
  303.     CONST Wr = InOut.WriteString;
  304.   in Zukunft 'Wr' statt 'InOut.WriteString' geschrieben werden. Solche
  305.   sog. Alias-Prozeduren können natürlich auch aus Definitionsmodulen
  306.   exportiert werden.
  307.  
  308. Übersetzte Definitionsmodule erhalten nun die Kennung 6 (bisher 5), d.h.,
  309.   Def-Module, die mit Compiler ab V4.3c übersetzt werden, können nicht mehr
  310.   von älteren Compilerversionen importiert werden!
  311.  
  312. Z-Direktive und Assembler:
  313.   Wird $Z+ verwendet, wird das Resultat von Funktionen in D0 geliefert,
  314.   solange das Datum dort hinein paßt. Sonst wird es wie üblich auf dem
  315.   A3-Stack übergeben.
  316.   Wird solch eine Funktion von Assembler aus aufgerufen, muß direkt
  317.   hinter den Funktionsnamen ein "/" gesetzt werden, um damit zu
  318.   bestätigen, daß man sich der besonderen Übergabe in D0 bewußt ist.
  319.   Andernfalls meldet der Compiler/Assembler einen diesbezüglichen
  320.   Fehler.
  321.  
  322. T-Direktive:
  323.   Beachten Sie dazu die zweite Seite im Anhang 11 des Handbuchs.
  324.  
  325. Kapitel A.11: Weiterer Hinweis zum Portieren alter MM2-Programme:
  326.   Früher (PIM 1 und 2) erlaubte N.Wirth, auch Subrange-Variable als
  327.   VAR-Parameter an andere Subrange bzw. den Basistyp zu übergeben.
  328.   So war z.B. folgendes möglich:
  329.     VAR subrange: [1..10];
  330.     BEGIN
  331.       ReadCard (subrange)
  332.   Da hier aber gar nicht überprüft werden kann, ob wirklich nur ein
  333.   Wert von 1 bis 10 in "subrange" eingelesen wurde, hat Wirth in PIM-3
  334.   festgelegt, daß nur noch >>identische<< Typen an VAR-Parameter
  335.   übergeben werden dürfen - Sie müssen nun also z.B. eine echte CARDINAL-
  336.   Variable an ReadCard übergeben!
  337.  
  338. TABLEs:
  339.   Die Adressen von TABLEs können nun mit der Funktion SYSTEM.CADR ermittelt
  340.   werden.
  341.   TABLEs sind eine einfache Art, um >>unveränderliche<< Daten in Tabellen-
  342.   form im Code (TEXT-Segment, daher nicht verändern!) abzulegen. Die
  343.   Syntax:
  344.     TABLE [.B|.W|.L] ident ":" integer { "," integer } ";"
  345.   Das heißt: Nach "TABLE" kann optional eine Größenangabe folgen (B:Byte,
  346.   W:Word, L:Longword, bei keiner Angabe wird Word angenommen), dann der
  347.   Name der "Tabelle", dann ein Doppelpunkt und zuletzt die Daten, durch
  348.   Kommata getrennt.
  349.   Beispiel:
  350.     TABLE.B Maske: $01,$03,$07,$0F,$1F,$3F,$7F,$FF;
  351.   Ein weiteres Beispiel finden Sie in "TIEFE.M".
  352.  
  353. DEREF: Diese Funktion im SYSTEM-Modul bietet die Möglichkeit, einen
  354. Zeigerwert zu derefenzieren, wo es die Modula-Syntax nicht zuläßt,
  355. beispielsweise den Wert einer Funktion. Alternativ können Sie auch
  356. die Direktive $A+ verwenden und dann das ^-Zeichen direkt anwenden.
  357. DEREF ist eine Megamax-Erweiterung. Beispiele:
  358.   Normales Modula:   p:= funktion(); x:= p^;
  359.   Mit DEREF:         x:= DEREF (funktion());
  360.   Erweiterte Syntax: x:= funktion()^;         (vorher $A+ verwenden!)
  361.  
  362. SHIFT/ROTATE: Diese Funktionen sind im Handbuch fehlerhaft beschrieben.
  363. Sie haben keine VAR-Parameter sondern liefern ein Funktionsergebnis
  364. vom selben Typ wie das Argument "x". Außerdem sind diese Funktionen
  365. noch nicht vollständig implementiert: Wenn das SET nicht vollständig
  366. ein Byte, Word oder Longword belegt (SET OF BITNUM [0..n], n=7/15/31),
  367. darf der 2. Parameter "n" für die Anzahl der Verschiebungen nur eine
  368. Konstante sein. Beispiele:
  369.   set:= SHIFT (set, n);
  370.   set:= ROTATE (set, -1);
  371.  
  372. Und noch eine Kleinigkeit: Der Compiler besteht zur Zeit aus zwei
  373. Implementationsmodulen und nicht aus einem Hauptmodul. Die beiden
  374. zusammengehörenden Module heißen "MM2COMP.IMP" und "MM2COMP2.IMP".
  375.  
  376. Weitere bekannte "Macken" und Fehler im Compiler:
  377.  
  378. * Module, die eine Prioritätsangabe im Modulkopf haben, laufen nicht auf
  379.   dem Atari TT. Verwenden Sie dazu stattdessen "IRMask" und "SetIRMask"
  380.   aus dem Modul "SysUtil2".
  381.  
  382. * ADDRESS ist immer noch zu allen POINTER-Typen kompatibel, obwohl das
  383.   nach PIM (Programieren in Modula-2) nicht korrekt ist.
  384.  
  385. * Eine CASE-Anweisung erzeugt immer und ausschließlich eine Sprungtabelle.
  386.   Ihre Größe ergibt sich aus der Differenz der kleinsten und größten Marke,
  387.   für die jeweils zwei Byte belegt werden. Dies wird wohl auch in Zukunft
  388.   so bleiben. Beispiel:
  389.     CASE cardinal OF
  390.       1:    ... |
  391.       3:    ... |
  392.       1990: ... |
  393.       2000: ... |
  394.   Hierbei werden 4000 Byte für die Sprungtabelle belegt, maximal ist die
  395.   Sprungtabelle auf 32 KB beschränkt.
  396.   Ordnen Sie also bei solchen CASE-Anweisungen ggf. die Marken in zusammen-
  397.   liegenden Gruppen, z.B. durch IF/ELSIF:
  398.      IF cardinal < 1000 THEN
  399.        CASE cardinal OF
  400.          1: ...|
  401.          3: ...|
  402.        END
  403.      ELSE
  404.        CASE cardinal OF
  405.          1990: ... |
  406.          2000: ... |
  407.        END
  408.      END;
  409.  
  410. * Die Konstanten "pi" und "e" aus dem Modul MathLib0 haben nicht die
  411.   exakten Werte, wenn sie in einem Modul verwendet werden, das im IEEE-
  412.   Format, also für eine der FPUs, übersetzt wird. Abhilfe ist z.Zt.
  413.   nur so zu erreichen, daß Sie diese Konstanten nochmals im eigenen
  414.   Modul neu deklarieren anstatt sie aus MathLib0 zu importieren.
  415.  
  416. * Übersicht über die Compiler-Optionen, die zur Konfiguration
  417.   (Speicherverwaltung, In-/Ausgabe usw.) dienen.
  418.   Sie können in einem Batch übergeben oder in der Compiler-Direktiven-
  419.   Zeile der Options-Box eingestellt werden.
  420.   
  421.   /A<Zahl>  (Default: /A20000)
  422.      Bestimmt die Größe des sog. DATA-Puffers. In ihm werden
  423.      seit V4.3 Konstanten gesammelt, die größer als 8 Byte
  424.      sind oder als REF-Parameter übergeben werden. Bei
  425.      Auftreten der Fehlermeldung 823 (DATA-Puffer-Überlauf)
  426.      sollte dieser Wert vergrößert werden.
  427.  
  428.   /I<Zahl>  (Default: /I2000)
  429.      Bestimmt die Größe des Identifier-Stacks. Ist zu vergrößern,
  430.      wenn der Fehler 807 (Überlauf des Bezeichner-Stacks) auftritt.
  431.  
  432.   /><Zahl>  (Default: />32768)
  433.      Bestimmt den Speicher, den der Compiler mindestens
  434.      beim Übersetzen freizuhalten hat. Normalerweise
  435.      reserviert der Compiler, der ja nicht wissen kann, wie
  436.      groß das zu übersetzende Programm werden wird, allen
  437.      verfügbaren Speicher abzüglich dieses Wertes für sich.
  438.      Bei Multitask-Betriebssystemen bleibt dann aber kein
  439.      Speicher mehr für andere Programme übrig. Hierzu kann
  440.      der Wert entsprechend vergrößert werden, allerdings
  441.      kann es dann passieren, daß große Programme vom Compiler
  442.      mangels Speicher nicht mehr übersetzbar sind. Dazu können
  443.      verschiedene Fehler auftreten, die alle im Bereich von
  444.      800-849 liegen.
  445.  
  446.   /<<Zahl>  (Default: /<3000000)
  447.      Bestimmt den Speicher, den der Compiler maximal für
  448.      sich belegen soll. Siehe auch "/<"-Option, welche
  449.      Vorrang hat.
  450.  
  451.   /O<Pfadname>  (Default: Erster Pfad aus aus entspr. Pfadliste)
  452.      Bestimmt den Verzeichnisnamen, auf dem alle während dieses
  453.      Compilerlaufs übersetzten Code-Dateien abgelegt werden sollen.
  454.   
  455.   /L<Dateiname>  (Default: ShellMsg.DefLibName)
  456.      Bestimmt den Namen der Library mit den Definitionsmodulen
  457.      (hat Vorrang vor den einzelnen DEF-Dateien in den Suchpfaden).
  458.      
  459.   /P<Dateiname>
  460.   /C<Zahl>
  461.      Angaben für Protokollausgabe. Siehe Handbuch.
  462.  
  463.   /Q
  464.      Unterdrückt Ausgaben des Compilers auf den Bildschirm.
  465.  
  466.   /@<Zahl>
  467.      Der Compiler erwartet den Text nicht in einer Datei
  468.      sondern im Speicher mit Beginn der angegebenen Adresse.
  469.   
  470.   /^<Zahl>
  471.      Der Compiler erwartet den Text nicht in einer Datei
  472.      sondern ruft wiederholt die Prozedur auf, deren Adr.
  473.      angegeben ist. Die Prozedur muß jew. einen Zeiger auf
  474.      den Zeilenanfang jeder Zeile zurückgeben, und zwar,
  475.      indem sie die Adresse entsprechend dem Assemblerbefehl
  476.      "MOVE.L <Zeilenadr>,(A3)+" auf dem von MM2 verwendeten
  477.      Parameterstack ablegt.
  478.  
  479.  
  480. 9. Hinweise zum Linker
  481. ----------------------
  482.  
  483. * Aufruf des Linkers über eine Batch-Datei
  484.  
  485.  Nicht alle Optionen des Linkers können in der Shell über die Optionen-Box
  486.  einstellt werden, sondern müssen ggf. dem Compiler über einen Batch in
  487.  der Commandline übergeben werden. Hier werden alle Optionen aufgeführt.
  488.  Die restlichen Einstellungen sind über die anderen Batch-Befehle vorzu-
  489.  nehmen oder werden aus den aktuellen Einstellungen der Linker-Optionen
  490.  übernommen (z.B. die Init-Module).
  491.  
  492.  In der Batch-Datei wird der Linker mit "Link" aufgerufen. Dahinter sollte
  493.  dann zuerst der Name des Hauptmoduls folgen, dann die Optionen.
  494.  
  495.  Jede Option muß mit einem "-" oder "/" eingeleitet werden dann folgt ein
  496.  weiteres Zeichen:
  497.  
  498.    '0'..'9':
  499.      Setzt genau jenes Bit im Flagfeld des "Header" im Programm. Dabei
  500.      entsprechen folgende Bits den Optionen im Linker-Dialog der Shell:
  501.        0: Fast Load, 1: Fast Code, 2: Fast Memory.
  502.    'R':
  503.      Größe d. Reloziertabelle. Siehe unten.
  504.    'S':
  505.      Erzeugen einer Symboldatei. Siehe unten.
  506.      Nach dem 'S' können - ohne Leerzeichen - Optionen angegeben werden,
  507.      die an die Funktion OutputSymbols des im Quelltext mitgelieferten
  508.      Moduls MM2LnkIO übergeben werden.
  509.    'I':
  510.      Erzeugt Initialisierungsliste. Siehe unten.
  511.    'H', 'F', 'M':
  512.      Bestimmt Optimierungsmodus. 'M': nur Prozedurnamen entfernen,
  513.      'H': unbenutzte Prozeduren entfernen ("Prozedurnamen erhalten"),
  514.      'F': vollständige Optimierung.
  515.    'V':
  516.      Ruft die Funktion 'VerboseOutput' von MM2LnkIO auf.
  517.    'O':
  518.      Bestimmt den Pfad/Namen der zu erzeugenden Programms. Ansonsten wird
  519.      der Name des Hauptmoduls mit passender Endung erzeugt.
  520.    'D':
  521.      Erzeugt ein DATA-Segment. Siehe unten. Zahl (DATA-Größe) oder Dateiname
  522.      (Daten für DATA-Segment) muß ohne Leerzeichen folgen.
  523.  
  524. * Fehlermeldung "Relocation table overflow"
  525.  
  526.  Sollten Sie bei einem umfangreichen Modul die Fehlermeldung "Relocation
  527.  table overflow", dann haben Sie die kritische Grenze von 1000 zu
  528.  relozierenden Adressen (globale Variablenzugriffe und Prozeduraufrufe)
  529.  in einem Modul überschritten. Abhilfe schaffen Sie, indem Sie einen Batch
  530.  zum Starten des Linkers erstellen und bei der LINK-Anweisung die Option
  531.  "-R", gefolgt von einem neuen Wert, anfügen. So enthielte die Batch-Datei
  532.  dann z.B. folgende Zeile: "LINK <name> -R2000"
  533.  
  534. * Erzeugen einer Symboldatei
  535.  
  536.  Der Linker erzeugt nun optional eine Symboldatei, in der alle Module und
  537.  Prozeduren samt ihren Adressen im erzeugten Programm aufgeführt werden.
  538.  
  539.  Weiterhin ist aus der Symboldatei ersichtlich, welche Module und Prozeduren
  540.  durch das Optimieren entfernt wurden und von welchen Pfaden die Modulcodes
  541.  geladen wurden.
  542.  
  543.  Um die Datei erzeugen zu lassen, ist in der Linker-Box der Shell der neue
  544.  entsprechende Schalter zu aktivieren. Dann erzeugt der Linker eine Datei
  545.  im selben Verzeichnis und mit selbem Namen wie die Ausgabedatei mit der
  546.  Endung "M2S". D.h, neben einem erzeugten Programm "C:\USER\MOD\DECODE.PRG"
  547.  finden Sie die Symboldatei "C:\USER\MOD\DECODE.M2S".
  548.  
  549.  Die Ausgabe der Symbole kann nach Belieben verändert werden, da die Ausgabe-
  550.  prozedur im Modul MM2LnkIO enthalten ist, das im Quelltext vorliegt (Ordner
  551.  SRC\MOS).
  552.  
  553.  Die Adressen der Symbole sind wie folgt zu interpretieren:
  554.  
  555.  - Der Wert des "Head" beim Modulnamen gibt die Anfangsadresse des Moduls
  556.    relativ zum Codebeginn an.
  557.  - Der Codebeginn ist der des TEXT-Segments und das findet man in der
  558.    Base Page im Feld 'p_tbase' (s. Modul SysTypes). Die Adresse der Base Page
  559.    kann z.B. im laufenden Programm durch 'PrgCtrl.GetBasePageAddr()' ermittelt
  560.    werden.
  561.  - Die Werte vor jeder Prozedur geben die Anfangsadresse relativ zum "Head"
  562.    an. Allerdings ist diese Adresse nicht unbedingt die Einsprungsadresse
  563.    des Prozedurcodes: Wenn die Prozedurnamen nicht aus dem Code wegoptimiert
  564.    wurden, kommt zuerst der Prozedurname und dahinter erst der Programmcode.
  565.  - Der Wert von "Var" beim Modulnamen gibt die Anfangsadresse der globalen
  566.    Variablen des Moduls relativ zum BSS-Segment an. Die Adresse des BSS-
  567.    Segments findet man in der Base Page im Feld 'p_bbase' (s. Modul SysTypes).
  568.    Die Offsets der einzelnen Variablen eines Moduls können Sie erfahren, wenn
  569.    Sie beim Übersetzen des Moduls das Compilerprotokoll einschalten. Am Ende
  570.    des Protokolls finden Sie die globalen Variablen aufgelistet. Wollen Sie
  571.    kein Protokoll des ganzen Moduls, versehen Sie die erste Zeile mit der
  572.    Direktive "(*$P-*)", die letzte vor dem END mit "(*$P+*)".
  573.  
  574. * Erzeugen einer Initialisierungsliste
  575.  
  576.  Der Linker erzeugt nun optional eine Datei, die die Module in der Reihenfolge
  577.  auflistet, in der sie initialisiert werden. Dazu ist beim MM2Link-Aufruf
  578.  die Option "-I" zu verwenden. Es wird dann eine Datei mit dem Namen
  579.  des gelinkten Programms und der Endung "M2I" erzeugt.
  580.  
  581. * Erzeugen eines DATA-Segments
  582.  
  583.  Um z.B. CPX-Module erzeugen zu können, muß das gelinkte Programm ein sog.
  584.  DATA-Segment enthalten. Es ist ein Block von Daten, die ähnlich dem Code
  585.  (TEXT-Segment) sind. Der Unterschied ist, daß die Daten im TEXT-Segment
  586.  zur Laufzeit des Programms nicht verändert werden dürfen, während das mit
  587.  den Daten im DATA-Segment sehr wohl passieren darf. Wer also z.B. selbst-
  588.  modifizierenden Code erzeugen möchte, darf die nicht mit dem vom Compiler
  589.  erzeugten Code im Speicher tun sondern muß den Code in einem anderen
  590.  Speicherbereich (entw. in einer Variable (BSS-Segment), im allozierten
  591.  Speicher oder im DATA-Segment) erzeugen. Umgekehrt kann man das DATa-Segment
  592.  auch als einen fest reservierten Variablenbereich ansehen, der mit Werten
  593.  vorbelegt werden kann.
  594.  
  595.  Um dies zu erreichen, gibt es 2 Möglichkeiten:
  596.  a) Es soll lediglich ein Bereich im DATa-Segment reserviert werden (reicht
  597.  in der Regel für CPX-Module aus). Dann muß dem Linker lediglich die Größe
  598.  des Bereichs in Bytes mitgeteilt werden und er erzeugt ein entsprechend
  599.  mit Null-Bytes gefülltes DATA-Segment.
  600.  b) Das DATA-Segment soll mit bestimmten Werten vorbesetzt werden. Dazu
  601.  ist eine Datei zu erzeugen, die diese Werte enthält. Der Linker fügt dann
  602.  genau diese Datei als DATA-Segment ins Programm ein.
  603.  
  604.  Dazu ist dem Linker die Option "-D" anzugeben, gefolgt (ohne Leerzeichen)
  605.  von entweder (a) einer Zahl für die Größe des DATAs oder einem Dateinamen,
  606.  der als DATA einzufügen ist.
  607.  Um die Option dem Linker zu übergeben, muß eine Batch-Datei erzeugt werden,
  608.  die dann zum Linken gestartet wird (s.o.).
  609.  
  610.  Um im Programm auf das DATA-Segment zugreifen zu können, muß der Zeiger aus
  611.  der Base Page ermittelt werden. Beispiel:
  612.     VAR bp: SysTypes.PtrBP; DATAStart: ADDRESS; DATALength: LONGCARD;
  613.       PrgCtrl.GetBasePageAddr (bp);
  614.       DATAStart:= bp^.p_dbase; DATALength:= bp^.p_dlen;
  615.  
  616.  Anmerkung: Konstanten, die der Modula-Compiler erzeugt, werden NICHT im
  617.  DATA-Segment abgelegt!
  618.  
  619.  
  620. 10. Hinweise zum Make
  621. ---------------------
  622.  
  623. Zur besseren Kontrolle gibt das Make-Programm nun bei jeder zu übersetzenden
  624. Datei an, aus welchem Grund sie übersetzt werden soll. Sie finden diese
  625. Information in der Make-Datei, die im "Temp. Pfad" unter dem Name "MAKE.M2C"
  626. abgelegt ist. Laden Sie diese Datei in den Editor, so sehen Sie dort am
  627. Anfang jeder Zeile eine Include-Anweisung für den Compiler ($I) gefolgt
  628. vom Namen des zu übersetzenden Moduls. Dahinter steht dann nach "Out:" der
  629. Pfad, auf dem der zugehörige Code des Moduls gefunden wurde.
  630. Am Ende der Zeile steht hinter "Reason:"...
  631.  ∙ der Name des importierten Moduls, das ein jüngeres Datum hat oder...
  632.  ∙ "No Code", wenn das Modul noch nicht übersetzt wurde oder...
  633.  ∙ "Modified", wenn die Quelldatei jünger als ihr Code ist, d.h. verändert
  634.    wurde.
  635.  
  636.  
  637. 11. Erweiterungen in der Shell
  638. ------------------------------
  639.  
  640. Zwei neue Batch-Anweisungen POSTAMBLE1 und POSTAMBLE2 erlauben die Bestimmung
  641. zweier Programmnamen incl. ihrer Parameter, die vor Verlassen der Shell
  642. gestartet werden sollen. Damit ist es nun möglich, im Shell-Batch eine
  643. RAM-Disk (z.B. die aus dem Buch "Scheibenkleister") einrichten und beim
  644. Shell-Ende wieder freigeben zu lassen. Das hat den Vorteil, daß die RAM-Disk
  645. nur während der Entwicklungszeit in der Shell Speicher belegt.
  646.  
  647. Die Datei-Information wirkt auch bei Ordnern, allerdings wird die >Länge<
  648. immer Null anzeigen, auch der Schreibschutz-Knopf bleibt unberücksichtigt.
  649. Sinn macht dies nur ab TOS 1.4, wo auf diese Weise zumindest der Name des
  650. Ordners verändert werden kann.
  651.  
  652. Der Zeichensatz für TextWindows und WindowLists (also alle Fenster mit
  653. Textausgabe) kann bei der großen Shell (MM2SHELL) gewählt werden. Dazu
  654. enthalten die Shell-Parameter neue Eingabefelder für den Namen und die
  655. Größe (in Punkt) des Zeichensatzes.
  656. Gibt man keinen Namen an, wird der aktuelle Systemzeichensatz eingesetzt.
  657. Der Name des normalen Systemfonts ist "6x6 system font". Seine Größen sind
  658. 8, 9, und 10. Andere Fonts werden nur verfügbar, wenn ein GDOS mit Fonts
  659. geladen ist (im AUTO-Ordner). Wird ein anderer Name eingetragen, muß der
  660. exakt mit Groß-/Kleinschreibung eingegeben werden, andernfalls kommt eine
  661. Fehlermeldung.
  662. Die Namen der vorhandenen Fonts können ggf. mit dem Programm TextDemo.M
  663. (DEMO-Ordner) ermittelt werden. Startet man es, zeigt es mit jedem
  664. Tastendruck einen der vorhandenen Fonts an. Die Größen müssen ggf.
  665. ausprobiert werden, sie rangieren in der Regel zw. 5 und 20.
  666.  
  667.  
  668. 12. MM2CLink - Der Linker für Turbo-C & Pure-C
  669. ----------------------------------------------
  670.  
  671. Das im neuen MM2-Handbuch auf Seite 1-15 beschriebene MM2CLink-Paket ist
  672. nun auf diesen Disketten enthalten. Es befindet sich in Form von zwei
  673. selbstentpackenden Archiven MM2CL1.TOS und MM2CL2.TOS auf den MM2-Disketten.
  674. Zum Ausprobieren muß man diese Dateien in das Verzeichnis der MM2-Shell
  675. kopieren und dann starten. Es wird dann im Verzeichnis der Shell ein Ordner
  676. MM2CLink erzeugt. Weitere Dokumentation findet man dann im Ordner MM2CLINK.
  677. Dank der komfortablen GEM-Einbindung sollte die Bedienung kein Problem sein.
  678.  
  679. WICHTIG: Sind alle Dateien entpackt, müssen noch ein paar Ordner angelegt
  680. werden, weil sonst bei der Übersetzung der Module vom Modula-Compiller
  681. immer eine Fehlermeldung erscheint! Innerhalb des Ordners MM2CLINK befinden
  682. sich die Ordner PC und TC. In PC müssen Sie die Ordner DEF, IMP und IMP.881
  683. erzeugen, in TC die Ordner DEF und IMP.
  684.  
  685. O-Ton Autor Michael Seyfried:
  686.  
  687.   Bis jetzt konnte ich alle meine C-Sourcen und Objektcodes uneingeschränkt
  688.   in MM2-Module konvertieren. Darunter sind auch die Geiß-Bibliothek und das
  689.   Deduktionssystem Otter 2.0.
  690.  
  691.   Dank Thomas Tempelmann kann man die eingebundenen C-Funktionen aus MM2-
  692.   Programmen direkt aufrufen. Dazu wurde der TC-Parameterübergabemechanismus
  693.   im neuen MM2-Compiler 4.0 implementiert.
  694.  
  695.   Ab der Version 2.0 können mit MM2CLink erzeugte Implementationen uneinge-
  696.   schränkt gelinkt werden.
  697.  
  698. Das MM2CLink-Paket ist nun Shareware. Wenn Sie es einsetzen, sollten Sie
  699. dafür 50 DM an den Autor zahlen. Damit macht sich die von ihm investierte
  700. Arbeit zwar längst nicht bezahlt, aber genau deswegen wäre es nur fair,
  701. ihn dafür wenigstens ein wenig zu belohnen. Und vielleicht hat er ja auch
  702. noch eine verbesserte Version für Sie...
  703.  
  704. Seine Adresse:
  705.  
  706. Michael Seyfried
  707. Unterer Mauergarten 22
  708. 6520 Worms 24
  709. Tel: 06241/54671
  710. Bankverbindung: Sparkasse Worms BLZ 553 500 10 KNr: 580 630
  711.  
  712.  
  713. 13. Die aktuellen Nummern der MAUS-Mailboxen
  714. --------------------------------------------
  715.  
  716. Nr Kürzel   Name                 Nummer
  717. -- --- ------------------------- -------------------
  718. 41 OTR MAUS MAUS On Tour         [nicht öffentlich]
  719. 92 K0  MAUS Usenet-Gateway       [nicht öffentlich]
  720. 52 A2W MAUS Wien-2               0043-1-4703022
  721. 51 A-W MAUS Wien/Österreich      0043-1-7984204
  722. 88 A-L MAUS Linz - Österreich    0043-732-315099
  723. 69 W   MAUS Wuppertal            0202-7387524
  724. 56 ME  QUARK Ratingen            02102-475669
  725. 80 KR2 MAUS Krefeld2             02151-307007
  726. 34 KR  MAUS Krefeld              [nicht öffentlich]
  727. 19 RS  MAUS Remscheid            02191-40828
  728. 11 K2  MAUS Köln-Porz            02203-696379
  729.  8 K   MAUS Köln                 0221-1390008
  730. 74 SU  MAUS Rheinbach/Rhein-Sieg 02226-12326
  731. 65 BM  MAUS Hürth/Erftkreis      02233-65194
  732.  4 BN  MAUS Bonn                 0228-213230
  733. 82 HAL MAUS Halle                [nicht öffentlich]
  734. 39 UN  MAUS Unna                 02303-63102
  735. 68 UN2 MAUS Unna 2               02303-66232
  736. 17 DO  MAUS Dortmund             0231-125050
  737. 73 DO2 MAUS Dortmund 2           0231-617299
  738. 25 MK  MAUS Iserlohn             02371-14490
  739. 26 AC2 MAUS Aachen-2             0241-54080
  740. 33 AC3 MAUS Aachen-3             0241-54540
  741.  2 AC  MAUS Aachen               0241-902002
  742.  9 WAF MAUS Drensteinfurt        [nicht öffentlich]
  743. 24 MS3 MAUS Münster 3            0251-260324
  744.  1 MS  MAUS Münster              [nicht öffentlich]
  745. 55 MS2 MAUS Münster 2            0251-77262
  746. 31 ST  MAUS Emsdetten/Steinfurt  02572-88881
  747. 63 DU2 MAUS Moers/Duisburg 2     02841-55275
  748. 37 DU  MAUS Moers/Duisburg       02841-953182
  749. 23 B   MAUS Berlin               030-6246510
  750. 70 B2  QUARK Berlin              030-7519443
  751. 86 L   QUARK Leipzig             034298-38577
  752. 81 CB  QUARK Cottbus             0355-539156
  753. 36 HRO MAUS Hansestadt Rostock   0381-696350
  754. 79 SN  MAUS Schwerin/Meckl.      0385-715917
  755. 14 HH  MAUS Hansestadt Hamburg   040-5381657
  756. 35 HH2 MAUS Hamburg 2            040-5478556
  757. 44 HH3 QUARK Hamburg             040-7209674
  758. 21 HB2 MAUS Hansestadt Bremen 2  0421-702569
  759.  3 HB  MAUS Hansestadt Bremen    0421-86675
  760.  6 KI  MAUS Kiel                 04322-6501
  761. 57 OL  MAUS Oldenburg            0441-691296
  762. 99 WHV MAUS Wilhelmshaven        04421-13435
  763. 72 HL  MAUS Lübeck               0451-394722
  764. 32 FL  MAUS Flensburg            0461-13117
  765. 40 SL  MAUS Schleswig            04621-31820
  766. 83 NF  MAUS Nordfriesland        04671-2382
  767. 75 IZ  MAUS Itzehoe              04821-4691
  768. 98 H2  MAUS Hannover-2           [nicht öffentlich]
  769. 71 H   MAUS Hannover             0511-775260
  770. 27 BI  QUARK Bielefeld           0521-24222
  771. 66 PB2 MAUS Paderborn-2          05251-541578
  772. 42 PB  QUARK Paderborn           05251-71409
  773. 95 PB3 QUARK Paderborn 3         [nicht öffentlich]
  774. 89 PE2 MAUS Fürstenau/Peine 2    [nicht öffentlich]
  775. 20 PE  MAUS Fürstenau/Peine      05302-7313
  776. 85 WOB MAUS Wolfsburg-Reislingen 05363-40775
  777. 29 OS  MAUS Osnabrück            0541-597571
  778. 77 CLP MAUS Bunnen/Loeningen     05434-3797
  779. 87 GÖ  MAUS Göttingen            0551-7704464
  780. 45 WI  MAUS Wiesbaden            0611-721704
  781. 28 WI2 MAUS Wiesbaden 2          0611-9410986
  782. 62 HG  MAUS Bad Homburg          06172-36953
  783. 18 MTK MAUS Main-Taunus-Kreis    06196-81041
  784. 22 HD  MAUS Hemsbach/Heidelberg  06201-477275
  785. 15 LU  MAUS Ludwigshafen         0621-6296138
  786. 91 KL  MAUS Kaiserslautern       0631-17901
  787. 54 ZW  MAUS Zweibrücken          06332-16629
  788. 78 SB  MAUS Saarbrücken          0681-3904998
  789. 97 SB2 MAUS Saarbrücken-2        0681-9931317
  790. 10 F   MAUS Frankfurt            069-6313857
  791. 46 BB  MAUS Böblingen            07031-275496
  792. 64 S3  MAUS Stuttgart 3          0711-2368367
  793. 38 S   MAUS Stuttgart            0711-5590396
  794. 43 S2  MAUS Stuttgart 2          0711-6364625
  795. 53 HN  QUARK Heilbronn           07131-507329
  796. 49 BB2 MAUS Weil/Böblingen       07157-67371
  797. 76 KA2 MAUS Karlsruhe 2          [nicht öffentlich]
  798. 48 KA  MAUS Karlsruhe            0721-358887
  799. 59 BL  MAUS Albstadt/Balingen    07431-74069
  800. 90 KN  QUARK Konstanz            07531-72341
  801. 60 FR  QUARK Freiburg            0761-30032
  802. 67 OG  MAUS Offenburg            0781-38807
  803. 30 TBB MAUS Bad Mergentheim      07931-52567
  804. 12 MB  MAUS Bayrischzell         08023-332
  805. 84 RO  MAUS Rosenheim            08031-890496
  806. 16 LA  MAUS Landshut             0871-640321
  807. 58 M4  MAUS München 4            089-1406018
  808.  5 M   MAUS München              089-6886705
  809. 96 M2  MAUS München 2            089-983120
  810. 50 N   MAUS Nürnberg             0911-405167
  811. 47 FÜ  MAUS Fürth                0911-7530280
  812. 61 WUN MAUS Wunsiedel            09232-70251
  813.  7 WÜ  MAUS Würzburg             0931-280269
  814. 13 R   MAUS Regensburg           0941-448518
  815.  
  816. Alle Boxen können mit einem Modem mit 1200 oder 2400 Baud erreicht werden,
  817. viele sogar mit 9600, 14400 oder 19200 Baud.
  818.  
  819. Wenn Sie von einer anderen Box als der MAUS M (Nr. 5) eine persönliche
  820. Nachricht Thomas Tempelmann schicken wollen, können Sie das nur, wenn
  821. Sie dort einen Beitrag (ca. 30-50 DM jährlich) bezahlt haben.
  822. Wenn Sie wegen einer Frage dennoch nicht in der MAUS M anrufen wollen,
  823. schicken Sie Ihre Abfrage in der Box Ihrer Wahl in der "Gruppe" MM2-FRAGEN
  824. statt eine persönliche Nachricht zu senden.
  825.  
  826.  
  827. 14. Korrekturen zum Handbuch
  828. ----------------------------
  829.  
  830. * Seite 3-27/30: Die SYSTEM-Funktionen SHIFT/ROTATE haben keinen VAR-Parameter
  831.   sondern liefern den veränderten Wert als Funktionsergebnis.
  832.  
  833. * Seite 3-32: In der untersten Zeile muß "GEMBase" statt "AESBase und "VDIBase"
  834.   stehen.
  835.  
  836.  
  837. 15. Weiterer Support & Vertrieb
  838. -------------------------------
  839.  
  840. Das Copyright liegt seit Herbst '93 nicht mehr exclusiv bei Application
  841. Systems Heidelberg. Bei Fragen, Updates und Neukäufen wenden Sie sich
  842. bitte an:
  843.  
  844. Thomas Tempelmann
  845. Schusterwolfstr. 13
  846. D-81241 München
  847. Tel. (089) 8347394
  848. FAX  (089) 8206981
  849.  
  850. (Sollte die Adr. nicht mehr stimmen, wenden Sie sich an ASH: 06221 302210)
  851.  
  852. Sie können weiterhin jederzeit Updates des Systems erhalten.
  853. Schicken Sie dazu wie gewohnt Ihre vier Original-Disketten (oder Kopien
  854. davon) an die neue Adresse und legen Sie 30(!) DM in bar oder als Scheck
  855. sowie einen adressierten Rückumschlag bei.
  856.  
  857. Bevor Sie sich schriftlich wegen einer Neubestellung oder wegen Fragen an
  858. mich wenden, kontaktieren Sie mich bitte zuerst telefonisch oder per FAX,
  859. denn auf diese Weise erhalten Sie viel eher eine Antwort!
  860.  
  861.  
  862.          Und nun viel Erfolg mit Ihrem Megamax Modula-2!
  863.  
  864.                           Die Autoren
  865.  
  866.                        Manuel Chakravarty
  867.                          Jürgen Müller
  868.                        Thomas Tempelmann
  869.